シングルセル解析 (scRNA-seq) についての情報ページを作成しました。10x Genomics のデータ、Cell Ranger の使い方、おもに Seurat を使った解析方法を解説しています。
ggplot2: ラベルを変更
図のタイトル、x軸のラベル、y軸のラベル、凡例 (legend) のタイトルなどの文字は、 labs() 関数で変更できます。
*一方、フォントのサイズや、色の変更は theme() 関数で行います。
labs の変更するオプションとの対応を下図に示します。凡例 (legend) のタイトルの指定は、 fill もしくは、 color で指定します。下記の例は、aes() で、 fill = sample
としているため、fill で指定することになります。
上記のコードの例です。
plot_data <- input_data %>%
gather(starts_with("Sample"), key = "sample", value = "read_count")
g <- ggplot(plot_data, aes(x = sample, y = read_count, fill = sample))
gg <- g + geom_boxplot() +
scale_fill_brewer(palette = "Spectral") +
theme(text = element_text(family = "HiraKakuProN-W3"))
gg + labs(title = "タイトル",
subtitle = "サブタイトル",
x = "x軸ラベル",
y = "y軸ラベル",
caption = "キャプション",
fill = "凡例ラベル")
Mac版の R, ggplot2 環境で日本語フォントを使うには、下記を参考にしました。
ggplot2: 散布図を色付け2
前回の続きです。
特定の列の値に応じて色付けをするとき、条件式が使える、と紹介しましたが、条件式が複雑な場合は、予め mutate で色付けする条件を決めておく方が読みやすいコードになります。
plot_data <- input_data %>%
mutate("condition" = if_else(Sample2 > 1, "high",
if_else(Sample2 < -1, "low", "middle")))
> plot_data
# A tibble: 100 x 3
Sample1 Sample2 condition
<dbl> <dbl> <chr>
1 0.0145 0.550 middle
2 1.00 -0.627 middle
3 0.193 -0.300 middle
4 1.45 0.612 middle
5 -1.25 -0.134 middle
6 0.965 0.113 middle
7 0.0219 0.351 middle
8 0.0158 -1.11 low
9 0.802 0.357 middle
10 -0.387 -0.828 middle
# … with 90 more rows
上記の例では、新たに condition として、色付け用の列を定義しています。if_else() 関数を用いて、 Sample2 > 1 のものを “high“、そうでない場合は、もう一度 if_else() で判定して、 Sample2 < -1 であれば、 “low“、それ以外を “middle” と定義しています。
if_else(条件式, 真の値, 偽の値)
例では、偽の値に、もう一度 if_else() を適用しています。(case_when() 関数を用いても良いです。)あとは、ここで定義した condition を aes() の color に指定するだけです。
g <- ggplot(plot_data, aes(Sample1, Sample2, color = condition))
g + geom_point()
凡例の順序を変えたい場合 (high, middle, low の順に変更したい)は、並び替えの場合と同様です。 レベルを指定した factor として上書きします。
また、カラーをマニュアルで指定する場合は、ボックスプロットの時と同様です。 scale_color_manual() や scale_color_brewer() を用います。
最終的に、下記のようなコードになります。
plot_data <- input_data %>%
mutate("condition" = if_else(Sample2 > 1, "high",
if_else(Sample2 < -1, "low", "middle"))) %>%
mutate(condition = factor(condition, levels = c("high", "middle", "low")))
g <- ggplot(plot_data, aes(Sample1, Sample2, color = condition))
g + geom_point() + scale_color_brewer(palette = "RdYlGn")
ggplot2: 散布図を色付け
散布図を色付けする際に、特定の列を color として使用できます。ボックスプロットの時と同様に aes() の中で、 color を指定します。
ggplot(input_data, aes(Sample1, Sample2, color = Sample2))
下記は、 Sample2 の列を color に指定した場合です。
input_data <- tibble("Sample1" = rnorm(100),
"Sample2" = rnorm(100))
g <- ggplot(input_data, aes(Sample1, Sample2, color = Sample2))
g + geom_point()
Sample2 の値(double, 連続値) に応じて、ドットがグラデーションで色付けされます。
color の指定には、直接、条件式を入力することもできます。下記は、 「Sample2 > 1」 を指定した例です。
g <- ggplot(input_data, aes(Sample1, Sample2, color = Sample2 > 1))
g + geom_point()
条件式の結果が、真または偽の離散値なので、色もグラデーションになりません。 Sample2 の値が 1より大きいところが 真 (TRUE) なので、水色に表示されます。(それ以外は 偽 (FALSE) の色。)
ggplot2: フォントサイズを変更する
全体のフォントのサイズを変更するには、 theme() 関数を用います。オプションの「text」にフォントのサイズを指定します。その際、直接、「size = 24」 とするだけではなく、 element_text() の中で宣言する必要があります。
theme(text = element_text(size = 24))
theme() 関数は、geom_boxplot() の後に 「+」で続けて指定します。
g <- ggplot(plot_data, aes(x = sample, y = read_count, fill = sample))
g + geom_boxplot() + theme(text = element_text(size = 24))
ggsave("boxplot_image.png", width = 4, height = 4, unit = "in")
theme 関数の text オプションは、 x 軸や y 軸のラベル、キャプションなど、全体に影響します。個別に指定する場合は、 theme(axis.text.x = element_text(size = 24))
などとします。
その他のテキストについても、個別に細かく指定が可能です。
- x軸のラベル: axis.text.x
- y軸のラベル: axis.text.y
- x軸のタイトル: axis.title.x
- y軸のタイトル: axis.title.y
- 凡例のタイトル: legend.title
- など、他にもあります。
Modify components of a theme
https://ggplot2.tidyverse.org/reference/theme.html